package java67_14;

import java.util.Arrays;

/**
 * 客户经理类
 * 
 * @author Administrator
 *
 */
public class CustManager {
	String name = "王大锤";
	String tele = "1319999999";
	// 管理的客户,最多30
	String customers[] = new String[15];

	int num = 0;// 人数

	/**
	 * 增加新客户
	 * 
	 * @param newCustomer 客户的姓名
	 */
	public void addCust(String newCustomer) {
		// Scanner in = new Scanner(System.in);
		// 找到一个空位置
		// null就是空位置
		if (search(newCustomer)) {// 最好把这个方法改成返回Boolean,表示是否添加成功
			System.out.println("此客户 " + newCustomer + " 已经存在了");
			return;
		}
		for (int i = 0; i < customers.length; i++) {
			if (customers[i] == null) {
				customers[i] = newCustomer;
				System.out.println("添加成功");
				num++;// 人数+1
				return;// !!!!!!!!!!!!!
			}
		}
		System.out.println("添加失败");// 没有多余的空间了
	}

	/**
	 * 淘汰没有价值的客户
	 * 
	 * @param cname
	 * @return
	 */
	public boolean dismiss(String cname) {
		for (int i = 0; i < customers.length; i++) {
			if (customers[i] != null && customers[i].equals(cname)) {
				customers[i] = null;//
				return true;
			}
		}
		return false;
	}

	/**
	 * 打印出已经存在的客户
	 */
	public void showCustomers() {
		for (int i = 0; i < customers.length; i++) {
			if (customers[i] != null) {
				System.out.println(customers[i]);
			} // else
				// break;
		}
	}

	/**
	 * 根据客户名查找是否存在其中
	 * 
	 * @param name
	 * @return
	 */
	public boolean search(String name) {
		for (int i = 0; i < customers.length; i++) {
			if (customers[i] != null && customers[i].equals(name)) {
				// if (customers[i].equals(name)) {
				return true;// 直接返回
				// }
			}
		}
		return false;

//		boolean f = false;
//		for (int i = 0; i < customers.length; i++) {
//			if (customers[i] != null) {
//				if (customers[i].equals(name)) {
//					f = true;
//					break;
//				}
//			}
//		}
//		return f;
	}

	/**
	 * 按照范围查找客户姓名 Start 和end 范围不考虑
	 * 
	 * @param start 查找起点,从 0开始
	 * @param end   查找终点
	 * @param name  查找的名字
	 * @return
	 */
	public boolean searchByRange(int start, int end, String name) {
		for (int i = start; i <= end; i++) {
			if (customers[i] != null && customers[i].equals(name)) {
				return true;// 直接返回
			}
		}
		return false;
	}

	/**
	 * 根据位置查找客户姓名 没有考虑数组越界的问题. 下标是从0开始的
	 * 
	 * @param index 位置
	 * @return
	 */
	public String find(int index) {
		if (index < 0 || index >= customers.length)
			return null;

		return customers[index];

//		String sp = null;
//		for (int i = 0; i < customers.length; i++) {
//			if (i == index) {
//				sp = customers[i];
//				System.out.println("指定位置的客户为：" + sp);
//			}
//		}
//		return sp;
	}

	/**
	 * 修改客户姓名. 考虑了新名字可能重复的问题,没有考虑返回false的原因. 无法区分修改失败的原因是因为老名字不在,还是新名字重复了...
	 * 
	 * @param oldName 老名字
	 * @param newName 新名字
	 * @return 是否修改成功
	 */
	public boolean modify(String oldName, String newName) {
		for (int i = 0; i < customers.length; i++) {
			// 不需要!=null的判断了
			if (oldName.equals(customers[i])) {
				if (!search(newName)) {// 新名字不在
					customers[i] = newName;
					return true;
				} else {
					return false;
				}

			}
		}
		return false;
	}

	/**
	 * 返回排序的姓名数组
	 * 
	 * @return
	 */
	public String[] sort() {
		Arrays.sort(customers);
		return customers;
	}

	/***
	 * 获得人数
	 * 
	 * @return
	 */
	public int getNum() {
		return num;
	}
}
